home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Intervals / get-interval < prev    next >
Lisp/Scheme  |  1998-08-11  |  2KB  |  61 lines

  1. get-interval type list 
  2.  
  3. This function is designed to find interval values between integers in an integer list. 
  4.  
  5. (get-interval :all '(1 2 3 4 6 -6))
  6. => (1 1 1 2 -12)
  7.  
  8. In the above example the output describes :all the interval relationships in the list. With the type parameter :all-rand the interval value between the last and first integers may be added to the output list, as below:
  9.  
  10. (get-interval :all-rand '(1 2 3 4 6 -6))
  11. => (1 1 1 2 -12 -7)
  12.  
  13. With the type setting :rand an interval value between the last and first integers:
  14.  
  15. (get-interval :rand '(1 2 3 4 6 -6))
  16. => -7
  17.  
  18. With the type setting :max the largest interval in the list may be located and described:
  19.  
  20. (get-interval :max '(1 2 3 4 6 -6)) ; the biggest interval
  21. => 12
  22.  
  23. When music is in a chromatic tonality a symbol list or lists may be analysed for intervals.
  24.  
  25. (get-interval :all '((a b c d e h) (d e f a h l)))
  26. => ((1 1 1 1 3) (1 1 -5 7 4))
  27.  
  28. (get-interval :max '((a b c d e h) (d e f a h l)))
  29. =>(3 7)
  30.  
  31. Using the parameter setting :start-symbol the first symbol in a sequence of lists may be extracted into a single list. The following sequence of examples demonstrates the interchangability possible between symbols and integers.
  32.  
  33. (get-interval :start-symbol '((a b c d e h) (d e f a h l)))
  34. => (a d)
  35.  
  36. (setq scale-list
  37.       (cfunction
  38.        (gen-noise-white 20 0.1 0.5) (g-integer 1 12)))
  39. => (6 10 12 10 10 3 6 6 10 7 7 1 3 2 3 9 1 3 1 9)
  40.  
  41. (setq scale-list1
  42.       (cfunction
  43.        (gen-noise-white 20 0.1 0.5) '(a b c d e f g h i j k l)))
  44. => (f j l j j c f f j g g a c b c i a c a i)
  45.  
  46. (setq interval-list
  47.       (get-interval :all scale-list))
  48. => (4 2 -2 0 -7 3 0 4 -3 0 -6 2 -1 1 6 -8 2 -2 8)
  49.  
  50. (setq interval-list
  51.       (get-interval :all scale-list1))
  52. => (4 2 -2 0 -7 3 0 4 -3 0 -6 2 -1 1 6 -8 2 -2 8)
  53.  
  54. (setq dada (integer-to-symbol~ scale-list))
  55. => (g k m k k d g g k h h b d c d j b d b j)
  56.  
  57. (setq dada-var (integer-to-symbol~ interval-list))
  58. => (e c -c a -h d a e -d a -g c -b b g -i c -c i)
  59.  
  60.  
  61.